CSRF (Cross-Site Request Forgery) এবং XSS (Cross-Site Scripting) হল দুটি গুরুত্বপূর্ণ নিরাপত্তা ঝুঁকি যা ওয়েব অ্যাপ্লিকেশনগুলোর নিরাপত্তা ক্ষতিগ্রস্ত করতে পারে। ExtJS (এবং সাধারণত সমস্ত ওয়েব অ্যাপ্লিকেশন) এর মধ্যে এই ঝুঁকিগুলিকে সঠিকভাবে প্রতিরোধ করা প্রয়োজন।
CSRF (Cross-Site Request Forgery) Protection
CSRF হল একটি ধরনের আক্রমণ যেখানে আক্রমণকারী ব্যবহারকারীর অধিকার ব্যবহার করে একটি অননুমোদিত বা ক্ষতিকারক অনুরোধ পাঠাতে সক্ষম হয়। এই আক্রমণে ব্যবহারকারীর সেশনের তথ্য (যেমন, কুকি) ব্যবহার করা হয়, যা সঠিকভাবে প্রমাণিত (authenticated) থাকে।
CSRF প্রতিরোধের জন্য কি ব্যবস্থা নেবেন?
CSRF Token ব্যবহার করা: একটি সাধারণ পদ্ধতি হলো প্রতিটি POST অনুরোধের সাথে একটি CSRF token পাঠানো। এই token টির মান সার্ভারের সেশনের সাথে সম্পর্কিত হয় এবং একটি যাচাই প্রক্রিয়া মাধ্যমে সার্ভার নিশ্চিত করে যে অনুরোধটি বৈধ।
CSRF Token ব্যবহারের উদাহরণ: ExtJS তে একটি CSRF token সংযুক্ত করতে, আপনি একটি
beforeloadহ্যান্ডলার বাheadersকনফিগারেশন ব্যবহার করতে পারেন যাতে CSRF token প্রতিটি HTTP অনুরোধের সাথে পাঠানো হয়।উদাহরণ:
Ext.Ajax.on('beforerequest', function(conn, options) { // CSRF token যোগ করা options.headers = options.headers || {}; options.headers['X-CSRF-TOKEN'] = Ext.util.Cookies.get('csrf_token'); });এখানে,
X-CSRF-TOKENহল এক্সটিজেএস অ্যাপ্লিকেশন থেকে পাঠানো CSRF Token এবংExt.util.Cookies.get('csrf_token')এর মাধ্যমে কুকি থেকে টোকেন নেয়া হচ্ছে। সার্ভার এই টোকেন যাচাই করে নিশ্চিত করবে যে এটি একটি বৈধ অনুরোধ।- HTTP Headers ব্যবহার করা: আপনি CSRF সুরক্ষার জন্য সার্ভার সাইডে কিছু HTTP হেডার কনফিগার করতে পারেন। সার্ভার থেকে এই হেডারগুলির মাধ্যমে CSRF টোকেন পাঠানো হয় এবং ক্লায়েন্ট সাইডে সেগুলি যাচাই করা হয়।
- X-CSRF-TOKEN: CSRF টোকেন ইনক্লুড করা থাকে।
- SameSite Cookies: এটি কুকি নির্ধারণ করতে ব্যবহৃত হয় যাতে ব্রাউজার ক্রস-সাইট রিকোয়েস্টে কুকি পাঠাতে না পারে।
SameSite Cookie: SameSite কুকি অ্যাট্রিবিউটটি ব্রাউজারকে নির্দেশ দেয় যে কুকিটি শুধুমাত্র একই উৎস থেকে আসা অনুরোধে পাঠানো হবে, যা CSRF আক্রমণ প্রতিরোধে সহায়ক।
উদাহরণ:
Set-Cookie: csrf_token=your_csrf_token_value; SameSite=Strict;এখানে,
SameSite=Strictকুকির নিরাপত্তা বাড়ায়, যা কুকি শুধুমাত্র বর্তমান সাইট থেকে আসা অনুরোধের জন্য পাঠাবে।
XSS (Cross-Site Scripting) Protection
XSS হল এমন একটি আক্রমণ যেখানে আক্রমণকারী ক্ষতিকারক স্ক্রিপ্ট কোড ইনজেক্ট করে, যা ব্যবহারকারীর ব্রাউজারে চলতে পারে এবং তাদের ডেটা চুরি করতে পারে অথবা অ্যাপ্লিকেশনকে দুর্বল করতে পারে।
XSS প্রতিরোধের জন্য কি ব্যবস্থা নেবেন?
HTML ইনপুট স্যানিটাইজেশন: XSS আক্রমণ থেকে রক্ষা পাওয়ার জন্য ব্যবহারকারীর ইনপুট স্যানিটাইজ করা অত্যন্ত গুরুত্বপূর্ণ। অর্থাৎ, আপনি যেকোনো ইউজার ইনপুটে (যেমন টেক্সটফিল্ড, ফর্ম ইত্যাদি) HTML বা স্ক্রিপ্ট ট্যাগ গুলি মুছে ফেলতে পারেন।
ExtJS তে,
htmlপ্রপার্টি ব্যবহার করার সময় অবশ্যই ইনপুট স্যানিটাইজ করতে হবে।উদাহরণ:
var safeHtml = Ext.util.Format.htmlEncode(userInput); var panel = Ext.create('Ext.panel.Panel', { html: safeHtml });htmlEncodeব্যবহার করে, ইনপুট থেকে কোনো HTML বা স্ক্রিপ্ট ট্যাগকে এন্ড-ইনকোড করা হবে, যা XSS আক্রমণ প্রতিরোধ করে।xtypeএবংtplসুরক্ষা:xtypeবাtplএর মাধ্যমে ডায়নামিক HTML তৈরি করার সময় সরাসরি ডেটা ব্যবহারের আগে তা স্যানিটাইজ করা উচিত। কখনও সরাসরি ইউজার ইনপুট HTML বা DOM-এ না যোগ করার চেষ্টা করুন।উদাহরণ:
var userInput = '<script>alert("XSS Attack")</script>'; var panel = Ext.create('Ext.panel.Panel', { title: 'User Input', html: Ext.util.Format.htmlEncode(userInput) // Properly sanitized });htmlEncodeব্যবহার করার মাধ্যমে, ডেটা ইনপুট হিসাবে আসা যে কোনো স্ক্রিপ্ট কোড নিরাপদ হয়ে যাবে।Content Security Policy (CSP): Content Security Policy (CSP) হল একটি নিরাপত্তা ফিচার যা ব্রাউজারকে নির্দেশ দেয় কোন ধরনের স্ক্রিপ্ট বা কনটেন্ট ওয়েবপেজে এক্সিকিউট করা যাবে এবং কোনটা না। এটি XSS আক্রমণ প্রতিরোধে সহায়ক।
CSP কনফিগারেশন করা উদাহরণ:
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; object-src 'none';">এখানে,
script-src 'self'নির্দেশ করে শুধুমাত্র বর্তমান সাইটের স্ক্রিপ্ট চালানো যাবে, এবং অন্য কোনো স্ক্রিপ্ট এক্সিকিউট করা যাবে না।Escaping Dynamic Content: ExtJS এর
templateবাstoreব্যবহার করে ডায়নামিক কন্টেন্ট যোগ করার সময়, ডেটা এসকেপ করার মাধ্যমে স্ক্রিপ্ট ইনজেকশন রোধ করতে হবে। ExtJS এরExt.XTemplateএবংExt.data.Storeসরাসরি স্ক্রিপ্ট ইনজেকশন থেকে রক্ষা পেতে অ্যাকশন নিতে সহায়ক।উদাহরণ:
var template = new Ext.XTemplate( '<div>{[this.htmlEncode(values.name)]}</div>', { htmlEncode: function(value) { return Ext.util.Format.htmlEncode(value); } } );এখানে,
htmlEncodeব্যবহার করে ডেটা এসকেপ করা হয়েছে, যাতে এটি স্ক্রিপ্ট কোড হিসেবে ইনজেক্ট না হতে পারে।
সারাংশ
- CSRF Protection:
- CSRF প্রতিরোধের জন্য CSRF Token ব্যবহার করা হয়, যা সার্ভার এবং ক্লায়েন্টের মধ্যে নিরাপদ যোগাযোগ নিশ্চিত করে।
- SameSite Cookies এবং HTTP Headers এর মাধ্যমে CSRF আক্রমণ থেকে রক্ষা পাওয়া যায়।
- XSS Protection:
- HTML Sanitization এবং Encoding ব্যবহার করে ইউজার ইনপুট সুরক্ষিত করা হয়।
- CSP (Content Security Policy) ব্যবহার করে স্ক্রিপ্ট এক্সিকিউশন নিয়ন্ত্রণ করা হয়।
- Escaping Dynamic Content এবং Template Sanitization এর মাধ্যমে XSS আক্রমণ থেকে রক্ষা পাওয়া যায়।
ExtJS অ্যাপ্লিকেশনে CSRF এবং XSS আক্রমণ প্রতিরোধ করার জন্য উপরোক্ত নিরাপত্তা ব্যবস্থাগুলি কার্যকরভাবে প্রয়োগ করা উচিত, যাতে অ্যাপ্লিকেশনটি নিরাপদ ও নিরাপত্তা-বান্ধব হয়।
Read more